package com.szrt.day20161024;


import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class ListDemo {
	
	
	/**
	 * list  crud
	 * 考点： list里面的东西可以重复
	 */
	@Test
	public void weiyi() throws Exception {
		
		//加强版本的数组   array  不需要执行长度
		List list = new ArrayList<>();
		
		int length = list.size();
		System.out.println(length);
		
		//所有类都有1个父亲  Object  考点： list里面的东西可以重复
		list.add("10");
		list.add("10");
		list.add("10");
		
		int length02 = list.size();
		System.out.println(length02);
	}
	
	
	/**
	 * 考点： list的东西是有序
	 * 
	 * JSON  长啥样?
	 */
	@Test
	public void order() throws Exception {
		
		//本质加强版本的数组   下标从0开始  考点： list的东西是有序
		List list = new ArrayList<>();
		
		list.add("10");
		list.add("20");
		list.add("30");
		list.add(1);
		
		String ss  = (String)list.get(0);
		System.out.println(ss);
		System.err.println(list.get(1));
	}
	
	
	@Test
	public void json01() throws Exception {
		
		//本质加强版本的数组   下标从0开始  考点： list的东西是有序
		List<String> list = new ArrayList<String>();
		list.add("10");
		list.add("20");
		list.add("30");
		
		System.out.println(list);
	}
	
	
	
	/**
	 * 泛型    在工作中 只要用到list map set 请一定用泛型
	 * 泛型告诉别人里面装的是什么
	 * 
	 * 好处1：  可以防止放入错误的东西 对于开发者来说是一种友好的提示。
	 * 好处2：  拿出的东西不需要强制转化。
	 */
	@Test
	public void fanxing() throws Exception {
		
		//本质加强版本的数组   下标从0开始  考点： list的东西是有序
		List<String> list = new ArrayList<String>();
		
		list.add("10");
		list.add("30");
		list.add("20");
		//list.add(1);
		
		String ss = list.get(0);
		System.out.println(ss);
		System.err.println(list.get(1));
	}
	
	
	/**
	 * 循环
	 * @throws Exception
	 */
	@Test
	public void xunhuan01() throws Exception {
		
		//本质加强版本的数组   下标从0开始  考点： list的东西是有序
		List<String> list = new ArrayList<String>();
		list.add("10");
		list.add("30");
		list.add("20");
		
		for(int index =0 ; index<list.size();index++){
			System.out.println(list.get(index));
		}
	}
	
	
	/**
	 * 高级循环 要求每个人都掌握
	 * 不管是数组还是list  如果返回的下标是-1 说明数组或者list没有这个元素
	 * 第1部分： 告诉我们list到底装的是神马玩意  类型  变量的名称
	 * 第2部分: 告诉我们到底循环哪个玩意
	 * for( 第1部分 : 第2部分 ){
	 * }
	 * @throws Exception
	 */
	@Test
	public void xunhuan02() throws Exception {
		
		//本质加强版本的数组   下标从0开始  考点： list的东西是有序
		List<String> list = new ArrayList<String>();
		list.add("10");
		list.add("30");
		list.add("20");
		list.add("40");
		
		for(int index =0 ; index<list.size();index++){
			String value = list.get(index);
			System.out.println(value);
		}
		
		System.out.println("==============================================");
		for(String xx : list){
			System.out.println(xx);
		}
		
		System.err.println(list.indexOf("40"));
		
		list.remove(1);
		System.out.println("==============================================");
		for(String xx : list){
			System.out.println(xx);
		}
	}

}
